package com.huike.report.mapper;

import java.util.List;
import java.util.Map;

import com.huike.report.domain.vo.ConversionRateVO;
import com.huike.report.domain.vo.LineSeriesVO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

/**
 * 首页统计分析的Mapper
 * @author Administrator
 *
 */
public interface ReportMapper {
	/**=========================================基本数据========================================*/
	/**
	 * 获取线索数量
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Integer getCluesNum(@Param("startTime") String beginCreateTime,
						@Param("endTime") String endCreateTime,
						@Param("username") String username);

	/**
	 * 获取商机数量
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Integer getBusinessNum(@Param("startTime") String beginCreateTime,
						   @Param("endTime") String endCreateTime,
						   @Param("username") String username);

	/**
	 * 获取合同数量
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Integer getContractNum(@Param("startTime") String beginCreateTime,
						   @Param("endTime") String endCreateTime,
						   @Param("username") String username);

	/**
	 * 获取合同金额
	 * @param beginCreateTime	开始时间
	 * @param endCreateTime		结束时间
	 * @param username			用户名
	 * @return
	 */
	Double getSalesAmount(@Param("startTime") String beginCreateTime,
						  @Param("endTime") String endCreateTime,
						  @Param("username") String username);

    /**=========================================今日简报========================================*/



	/**=========================================待办========================================
	/**
	 * 学科客户分布统计
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	@MapKey("subject")
	List<Map<String, Integer>> subjectStatisticsList(@Param("beginCreateTime") String beginCreateTime,
													 @Param("endCreateTime") String endCreateTime);

	/**
	 * 查询开始到结束时间之间每日新增线索数量
	 * @param beginCreateTime
	 * @param endCreateTime
	 * @return
	 */
	@MapKey("daily")
	List<Map<String, Object>> cluesIncrementStatistics(@Param("beginCreateTime") String beginCreateTime,
														@Param("endCreateTime") String endCreateTime);

	/**
	 * 查询开始时间的前一天新增线索累计数量
	 * @param beginBeforeTime
	 * @return
	 */
	Integer beginBeforeDateStatistics(String beginBeforeTime);

	/**
	 * 线索转化率统计线索总数量
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	Integer cluesNumsStatistic(@Param("beginTime") String beginTime, @Param("endTime") String endTime);

	/**
	 * 线索转化率统计有效线索数量
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	Integer effectiveCluesNumsStatistic(@Param("beginTime") String beginTime, @Param("endTime") String endTime);

	/**
	 * 线索转化率统计有效线索中的商机数量
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	Integer businessNumsStatistic(@Param("beginTime") String beginTime, @Param("endTime") String endTime);

	/**
	 * 线索转化率统计商机中的客户数量
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	Integer contractNumsStatistic(@Param("beginTime") String beginTime, @Param("endTime") String endTime);

	Integer totalBusinessStatistics(@Param("beginCreateTime") String beginCreateTime, @Param("endCreateTime") String endCreateTime);

	List<ConversionRateVO> conversionContractStatistics(@Param("beginCreateTime") String beginCreateTime,
														@Param("endCreateTime") String endCreateTime);

}
